/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controle;

import basicas.Produto;
import basicas.ValidadorProduto;
import dados.ConexaoDB;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;

/**
 *
 * @author Junior
 */
public class ControleProduto extends Controle{
    
  public  ControleProduto(){
    this.val = new ValidadorProduto();
    }
    
  public void cadastrarProduto(String desc , double preco)throws IllegalArgumentException{
    Produto p = new Produto();
    p.setDescricao(desc);
    p.setPreco(preco);
  this.cadastrar(p);
  }
    
  public Produto buscarProduto(long id)throws IllegalArgumentException{
  return (Produto)this.buscar(Produto.class, id);
  }
  
  public List listarProduto(){
  return this.listarProduto(" Produto ");
  }
  
  public List buscarProdutoDescricao(String desc)throws IllegalArgumentException{
      Session s = ConexaoDB.getSessionFactory().getCurrentSession();
      Criteria c = s.createCriteria(Produto.class);
      c.add(Restrictions.like("desc","%"+desc+"%"));
      return c.list();
  }
  
  public List buscarProdutoDescricao(double preco)throws IllegalArgumentException{
      Session s = ConexaoDB.getSessionFactory().getCurrentSession();
      Criteria c = s.createCriteria(Produto.class);
      c.add(Restrictions.eq("preco", preco));
      return c.list();
  }
  
  public void removerProduto(long id)throws IllegalArgumentException{
  Produto p = this.buscarProduto(id);
  this.remover(p);
  }
  
  public void atualizarProduto(long id,double preco,String desc)throws IllegalArgumentException{
  if(val.ehArgumentoValido("preco", preco))throw new IllegalArgumentException(val.getError());
  if(val.ehArgumentoValido("desc", preco))  throw new IllegalArgumentException(val.getError());
   
      Produto p = this.buscarProduto(id);
      p.setDescricao(desc);
      p.setPreco(preco);
      
  }
  
  public void atualizarPreco(long id,double preco)throws IllegalArgumentException{
  if(val.ehArgumentoValido("preco", preco))throw new IllegalArgumentException(val.getError());
      Produto p = this.buscarProduto(id);
      p.setPreco(preco);
      
  }
  
  public void atualizarDesc(long id,String desc)throws IllegalArgumentException{
  if(val.ehArgumentoValido("desc", desc))  throw new IllegalArgumentException(val.getError());
      Produto p = this.buscarProduto(id);
      p.setDescricao(desc);
     
      
  }
  
  
}
